﻿using System;
using System.Collections.Generic;
using Myotragus.Data.Containers;
using Myotragus.Data.Domain;
using Myotragus.Data.Repositories;

namespace Myotragus.Data
{
    public interface ILocalizableWriteRepository<TEntity, TId> :
        ILocalizableRepository<TEntity>
            where TEntity : IEntity
    {
        void Save(int lcId, IEnumerable<TEntity> entities);
        void Save(int lcId, params TEntity[] entities);

        void Delete(IEnumerable<TEntity> entities);
        void Delete(params TEntity[] entities);

        void Delete(IEnumerable<TId> ids);
        void Delete(params TId[] ids);
    }

    public class LocalizableWriteRepository<TEntity, TId> :
        LocalizableReadRepository<TEntity>, ILocalizableWriteRepository<TEntity, TId>
            where TEntity : IEntity
    {
        public LocalizableWriteRepository(IEntitiesContainer entities, 
            ILocalizableQueryBuilder<TEntity> queryBuilder) 
                : base(entities, queryBuilder)
        {
        }

        public void Save(int lcId, IEnumerable<TEntity> entities)
        {
            throw new NotImplementedException();
        }

        public void Save(int lcId, params TEntity[] entities)
        {
            throw new NotImplementedException();
        }

        public void Delete(IEnumerable<TEntity> entities)
        {
            throw new NotImplementedException();
        }

        public void Delete(params TEntity[] entities)
        {
            throw new NotImplementedException();
        }

        public void Delete(IEnumerable<TId> ids)
        {
            throw new NotImplementedException();
        }

        public void Delete(params TId[] ids)
        {
            throw new NotImplementedException();
        }
    }
}